
#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <assert.h>
using namespace std;

// void signalmain(int signal)
// {
//     cout << "信号处理中...  : " << signal << "  gitpid :" << getpid() << endl;
// }

// int main()
// {
//     signal(SIGINT, signalmain);

//     while ( 1)
//     {
//         cout << "接受信号中...... " << endl; 
//         sleep(1);
//     }
//     return 0;
// }
// int count = 0;
// void func(int c)
// { 
//     cout << " final count : " << count << endl;
// }

// int main()
// {
//     alarm(1);
//     signal(SIGALRM, func);
//     while (1)
//     {count++;
//     }
// }


// void func(int st)
// {
//    cout << "接受到信号: " << st << endl;
// }

// int main()
// {
//   for (int i =0; i  <= 31; i++)
//   {
//     signal(i, func);
//   }

  
//   while(1) {}
// }

// void cmpshow(const sigset_t& set)
// {
//    for (int i = 1; i <= 31; i++)
//    {
//     if (sigismember(&set, i))
//      {cout<< "1";}
//      else cout << "0";
//    }
//    cout << endl;
// }


// int main()
// {
//   sigset_t set, oset;
//   sigemptyset(&set);
//   sigemptyset(&oset);
//   sigaddset(&set, 2); // 目标阻塞信号 2
//   sigpending(&oset);
//   int n = sigprocmask(SIG_BLOCK, &set, &oset);
//   assert(n == 0);  // n 必然==0
//   (void)n;  // 目的是调用一次n,避免在release版本中，n未被调用的警告

//   while (1)
//   {
//      sigset_t tmp;
//      sigemptyset(&tmp);
//      sigpending(&tmp);
//      cmpshow(tmp);
//      sleep(1);
//   }
  
//   return 0;
// }

// int tmp = 0;

// void func(int sig)
// {
//    //  cout << "tmp: " << tmp << "-->";
//    //  tmp = 1;
//    //  cout << tmp << endl;

//    cout << "子进程结束信号：" <<  sig << endl;
//    exit(1);
// }



// int main()
// {
//    signal(SIGCHLD, func);
//    if (fork() == 0)
//    {
//       cout << "子进程 PID "  << getpid() << endl;
//       exit(1);
//    }

//    while (!tmp);

//    return 0;
// }


int main()
{
   sigset_t set;
   sigemptyset(&set);
   sigaddset(&set, 2);
   sigaddset(&set, 40);
   sigprocmask(SIG_BLOCK, &set, nullptr);

   while(1)
   {
      cout << "继续....." << endl;
      sleep(1);
   }

}



